
function request______(js_obj){
    //js_obj.method       请求格式是get 还是post  还是put  还是delete
    var method =js_obj.method;
    var onerror= js_obj.onerror ? js_obj.onerror!=null : function(){}
    var onnetworkerror= js_obj.onnetworkerror ? js_obj.onnetworkerror!=null : function(){}
    let url = js_obj.url;
    return function(js_obj2){
        //js_obj2.head_data    存放在url上的json数据
        //js_obj2.body_data    存放在body上的json数据
        //js_obj2.url          url
        let head_data=js_obj2.head_data;
        let body_data=js_obj2.body_data;
        let parameter_data=js_obj2.parameter_data //函数传入数据
        let execute_lst=js_obj2.execute_lst
        if (url==null){throw new Error('不能缺少url参数');}//缺少url就抛出异常
        if (head_data!=null){url=url+'?'+JSON.stringify(head_data)}//如果head_data不为空  就将head_data转为json格式存入url
        if (js_obj2.body_data!=null &&(method.toLowerCase()=='post' ||method.toLowerCase()=='put'  )){body_data=JSON.stringify(body_data)}else{body_data="{}"}//如果为post 或者 put 将body_data转为json格式
        let xhr = new XMLHttpRequest();
        xhr.open(method, url, true);
        xhr.onload = function() {
      if (xhr.status === 200) {
        // 请求成功，将返回的 JSON 数据解析为对象，并传递给回调函数
        var received_data = JSON.parse(xhr.responseText);
        for (let i=0;i<execute_lst.length;i++){
            let item=execute_lst[i];
            if (typeof item[0] === 'string' && item.length==2){ //{ ['eee.eee.eee','ww.eww.eee'],      //表示执行     parameter_data['eee']['eee']['eee']=received_data['ww']['eww']['eee']
                
                let data___=parameter_data;               //获取变量地址
                let temp_lst=item[0].split('.');          //拆分数组
                let last_name=temp_lst[temp_lst.length-1];//最后一个变量的名字
                for (let ii=0;ii<temp_lst.length-1;ii++){data___=data___[temp_lst[ii]]}

                let data___2=received_data;               //获取变量地址
                let temp_lst2=item[1].split('.');          //拆分数组
                let last_name2=temp_lst2[temp_lst2.length-1];//最后一个变量的名字
                for (let ii=0;ii<temp_lst2.length-1;ii++){data___2=data___2[temp_lst2[ii]]}
                data___[last_name]=data___2[last_name2]   //赋值
            } else if (typeof item[0] === 'function' && item.length==3){
                let data___=parameter_data;               //获取变量地址
                let temp_lst=item[1].split('.');          //拆分数组
                let last_name=temp_lst[temp_lst.length-1];//最后一个变量的名字
                for (let ii=0;ii<temp_lst.length-1;ii++){data___=data___[temp_lst[ii]]}

                let data___2=received_data;               //获取变量地址
                let temp_lst2=item[2].split('.');          //拆分数组
                let last_name2=temp_lst2[temp_lst2.length-1];//最后一个变量的名字
                for (let ii=0;ii<temp_lst2.length-1;ii++){data___2=data___2[temp_lst2[ii]]}
                item[0](data___[last_name],data___2[last_name2])   //赋值
            }
        }
      } else {
        // 请求失败，运行回调函数
       onerror(xhr.status);
      }
    };

    xhr.onerror = function() {
      // 网络错误，运行回调函数
      onnetworkerror();
    };

    // 发送请求 
        if (method.toLowerCase()=='post' ||method.toLowerCase()=='put'  ){xhr.send(JSON.stringify(body_data));}
        else{xhr.send()}
    
  };
}

var parameter_data={'ddd':{'dd':[]}}
var ttteeesssttt_get=request______({method:'get',url:'/V1/color'})
ttteeesssttt_get({
    head_data:{"limit":[1,20]},
    parameter_data:parameter_data,
    execute_lst:[['ddd.dd','data']]
})
//执行
//parameter_data 函数传入数据
//received_data  接收的数据
//func 是一个函数
execute_lst=[
    ['eee.eee.eee','ww.eww.eee'],      //表示执行     parameter_data['eee']['eee']['eee']=received_data['ww']['eww']['eee']
    [func,null,'eee.eee'],             //表示执行     func(parameter_data,received_data['ww']['eww']['eee'])
    [func,null,'eee.0'],             //表示执行     func(parameter_data,received_data['eee']['0'])
]